草庐IT

c++ - 实现 C++ ThreadLocal

全部标签

c# - 如果没有通过 using block 实例化实现 IDisposable 的类是否有方法抛出异常?

我发现了一些有潜在危险的类,如果它们不能被实例化,那么它们的危险性会小得多,除非它们在using语句中被实例化。我想知道是否有办法强制类只以这种方式实例化。(我知道IL会编译出什么,这就是为什么我不太确定这是否可能)干杯,菲尔。 最佳答案 没有办法强制执行它,但您可以构建一个customCodeAnalysisrule标记它。 关于c#-如果没有通过usingblock实例化实现IDisposable的类是否有方法抛出异常?,我们在StackOverflow上找到一个类似的问题:

c# - 类是否需要实现 IEnumerable 才能使用 Foreach

这是在C#中,我有一个正在使用其他人的DLL的类。它没有实现IEnumerable,但有2个方法可以传回IEnumerator。有没有一种方法可以在这些上使用foreach循环。我正在使用的类是密封的。 最佳答案 foreach不需要IEnumerable,这与普遍的看法相反。它所需要的只是一个方法GetEnumerator,该方法返回具有方法MoveNext和具有适当签名的get-propertyCurrent的任何对象。/编辑:然而,在你的情况下,你运气不好。但是,您可以简单地包装您的对象以使其可枚举:classEnumerab

c# - 为什么我没有看到 IDisposable 实现并发的任何实现?

当我查看IDisposable的示例实现时,我没有发现任何线程安全的。为什么IDisposable没有实现线程安全?(相反,调用者有责任确保只有一个线程调用Dispose())。 最佳答案 在使用完对象之前,您不应该丢弃它。如果有其他线程引用该对象并且它们有可能想要调用它的方法,则您不应该处置它。因此Dispose不需要是线程安全的。 关于c#-为什么我没有看到IDisposable实现并发的任何实现?,我们在StackOverflow上找到一个类似的问题:

c# - 为从 List<string> 继承的集合实现 GetEnumerator()

我正在尝试实现FilePathCollection。它的项目将是简单的文件名(没有路径-例如“image.jpg”)。通过foreach循环使用集合后,它应该返回通过与baseDirectory连接创建的完整路径。我怎样才能做到这一点?publicclassFilePathCollection:List{stringbaseDirectory;publicFilePathCollection(stringbaseDirectory){this.baseDirectory=baseDirectory;}newpublicSystem.Collections.IEnumeratorGetE

c# - 为什么接口(interface)定义中需要参数名称?我可以在实现过程中选择新的参数名称

不确定这是否是一个愚蠢的问题,但我刚刚注意到这一点:publicinterfaceIActivityDao:IDao{IListGetAllSinceSequence(longsequence,intcount);}publicclassActivityDao:AbstractNHibernateDao,IActivityDao{publicIListGetAllSinceSequence(longsequence,intmaxRecords){}}在我的实现中,我将第二个参数称为“maxRecords”。然而,在界面中,它被定义为“计数”。编译器仍然考虑实现的接口(interface

c# - += (o, arg) => 实际实现的是什么?

很抱歉问大家,但我是Vb.net的老手,正在转向C#。我有以下一段代码,当(在这种情况下)postAsync方法被触发时,它似乎被激活。我只是不明白代码在做什么(如下所示):-app.PostCompleted+=(o,args)=>{if(args.Error==null){MessageBox.Show("Picturepostedtowallsuccessfully.");}else{MessageBox.Show(args.Error.Message);}};如果有人能解释+=(o,args)=>实际上实现了什么,我将非常感激....非常感谢。蒂姆

c# - 如何解耦 IoC 框架实现

我一直在学习IoC、依赖注入(inject)等,并且很享受这个过程。对我来说,接口(interface)解耦和编程的好处是显而易见的。但是,我真的不喜欢将自己绑定(bind)到Unity或Autofac或Windsor等特定框架-因为我仍在学习并且尚未决定哪个最适合我的目的。那么,我如何围绕Unity之类的东西进行包装,以便以后可以轻松地切换到Windsor?(管他呢)。而且你敢说用另一个注入(inject)第一个;)谢谢!R.附言我将Unity标记为我目前的个人偏好(我只是喜欢Entlib)。 最佳答案 您当然可以通过使用Reso

C#类没有实现继承的抽象成员

如果我问的是愚蠢的问题,我很抱歉,但我完全是C#和ASP.NET的新手。我的代码有错误,我不明白。我正在使用VisualStudio2008。在这行代码中:publicclassSQLFAQProvider:DBFAQProvider我收到这个错误:Moby.Commerce.DataAccess.FAQ.SQLFAQProviderdoesnotimplementinheritedabstractmemberMoby.Commerce.DataAccess.FAQDBFAQProvider.DeleteFAQbyID(int)当我转到DBFAQProvider时,错误出现在这行代码中

c# - 实现接口(interface)的好处

在C#3.5中实现接口(interface)有什么好处? 最佳答案 您将能够将对象传递给需要接口(interface)作为参数的方法(或满足类型约束)。C#不支持“ducktyping”。仅仅通过编写接口(interface)定义的方法,对象不会自动与接口(interface)类型“兼容”:publicvoidPrintCollection(IEnumerablecollection){foreach(varxincollection)Console.WriteLine(x);}如果List没有实现IEnumerable接口(int

c# - 实现IQueryable包装器来转换结果对象

更新2013-08-22:看完“构建IQueryable提供程序系列”(感谢链接!)之后,我走了一些。我相应地更新了代码。它仍然没有完全正常工作。如果我正确理解了本教程,则在请求多个元素的情况下会调用GetEnumerator(例如,通过可查询的ToList()调用或任何聚合函数)。因此,包装程序的所有GetEnumerator实现都需要在提供程序上调用Execute并传递可查询对象的表达式。在其他情况下,如果仅请求单个元素,则直接调用Execute。查询对象的表达式还反射(reflect)了它是用于单个还是多个元素。这样对吗?不幸的是,现在在源查询提供程序上调用Execute时,我收